package leetCode;

/**
 * leet code7
 *
 * 个非负整数表示每个宽度为 1 的柱子的高度图，计算按此排列的柱子，下雨之后能接多少雨水。
 *
 *
 * @author 86155
 * @date 2023/12/13
 */
public class LeetCode7 {
    public static int trap(int[] height) {
        int all = 0;
        if (height == null || height.length < 3) {
            return all;
        }
        //左右各一个指针
        int L = 0;
        int sign = 0;//判断值
        int R = height.length-1;
        while (L < R) {
            //左边情况
            sign = Math.max(sign, Math.min(height[L], height[R]));
            if (height[L] < sign) {
                all+= sign-height[L];
            }
            if (height[R] < sign) {
                all+= sign-height[R];
            }
            //两者一样才一起动
            if (height[L] == height[R]) {
                L++;
                R--;
            }else if (height[L] < height[R]) {
                L++;
            }else if (height[L] > height[R]) {
                R--;
            }

        }

        return all;
    }

    public static void main(String[] args) {
        System.out.println(trap(new int[]{0,1,0,2,1,0,1,3,2,1,2,1}));
    }
}
